class Solution {
public:
    int maxArea(vector<int>& height) {
            //注意 是x轴共同构成的容器可以容纳最多的水 也就是横坐标之差*共同最长纵坐标(纵坐标最小值)
            //可以用俩边的指针
            //一个在左面 一个在右面 然后以当前值为最大值 右面的往左走 
            //怎么缩短一下复杂度
            int left = 0 ;
            int right = height.size()-1;
            int maxArea = 0;
            while(right > left)
            {   
                maxArea = std::max(maxArea, ((right - left) * std::min(height[right], height[left])));
                if(height[left]>height[right])right--;
                else left++;
            }
            //缩小规模的原理是 假如遇到了一个hl>hr 那么接水的值应该是 r-l *min（hr）
            //这时无论怎么移动 hl r-l都会变小（方向） min值最多就是hr，接的水是不会变多的，此时我们
            //已经把这时的水量储存好了 如果怎么移动都会变小 为什么我们还要管他呢 直接 r--
            //这时如果遇到了 hr>hl的情况 同理 只要是按照方向移动 怎么移动面积都不会变大 那就让l++
            //不要陷入误区 这里面找的是min hr hl 最小的那个 所以才能缩小范围 不要以为我现在小 之后找个大的
            //面积就能大 你现在小移动之后r-l更小h也不会变大 整体肯定是更小的
        return maxArea;
    }
};
